
//A.41 packing.h 
    
   /****************************************************************** 
    
       iLBC Speech Coder ANSI-C Source Code 
    
       packing.h               
    
       Copyright (c) 2001, 
       Global IP Sound AB. 
       All rights reserved. 
    
   ******************************************************************/ 
    
   #ifndef __PACKING_H 
   #define __PACKING_H 
    
   void packsplit( 
       int *index,                 /* (i) the value to split */ 
       int *firstpart,             /* (o) the value specified by most  
                                          significant bits */ 
       int *rest,                  /* (o) the value specified by least  
                                          significant bits */ 
       int bitno_firstpart,    /* (i) number of bits in most  
                                          significant part */ 
       int bitno_total             /* (i) number of bits in full range  
                                          of value */ 
   ); 
    
   void packcombine(  
       int *index,                 /* (i/o) the msb value in the  
                                          combined value out */ 
       int rest,                   /* (i) the lsb value */ 
       int bitno_rest              /* (i) the number of bits in the  
                                          lsb part */ 
   ); 
    
   void dopack(  
       unsigned char **bitstream,  /* (i/o) on entrance pointer to place  
                                          in bitstream to pack new data,  
                                          on exit pointer to place in  
                                          bitstream to pack future  
                                          data */ 
       int index,                  /* (i) the value to pack */ 
       int bitno,                  /* (i) the number of bits that the  
                                          value will fit within */ 
       int *pos                /* (i/o) write position in the  
                                          current byte */ 
   ); 
    
   void unpack(  
       unsigned char **bitstream,  /* (i/o) on entrance pointer to place  
                                          in bitstream to unpack  
     
                                          new data from, on exit pointer  
                                          to place in bitstream to  
                                          unpack future data from */ 
       int *index,                 /* (o) resulting value */ 
       int bitno,                  /* (i) number of bits used to  
                                          represent the value */ 
       int *pos                /* (i/o) read position in the  
                                          current byte */ 
   ); 
    
   #endif 
    
    
